#ifndef __GC9A01a_H
#define __GC9A01a_H

#include "main.h"
#include "stm32u5xx_ll_utils.h"
#include "stm32u5xx_hal.h"

#define ORIENTATION 2   // 设置显示方向 0,1,2,3

// 命令代码:
#define COL_ADDR_SET        0x2A
#define ROW_ADDR_SET        0x2B
#define MEM_WR              0x2C
#define COLOR_MODE          0x3A
#define COLOR_MODE__12_BIT  0x03
#define COLOR_MODE__16_BIT  0x05
#define COLOR_MODE__18_BIT  0x06
#define MEM_WR_CONT         0x3C

// 引脚定义 
//没有使用软件片选
//#define CS_GPIO_Port        //GPIOB
//#define CS_Pin              //GPIO_PIN_3
#define DC_GPIO_Port        GPIOA
#define DC_Pin              GPIO_PIN_2
#define Reset_GPIO_Port     GPIOB
#define Reset_Pin           GPIO_PIN_0

void GC9A01_CS_ON(void);
void GC9A01_CS_OFF(void);
void GC9A01_DC_ON(void);
void GC9A01_DC_OFF(void);
void GC9A01_Reset_ON(void);
void GC9A01_Reset_OFF(void);


void GC9A01_WR(uint8_t *data, size_t len);
void GC9A01_WR_Data(uint8_t *data, size_t len);
void GC9A01_WR_Byte(uint8_t val);
void GC9A01_WR_Command(uint8_t cmd);


void GC9A01_init(void);
void GC9A01_Set_Frame(uint16_t x_start, uint16_t y_start, uint16_t x_end, uint16_t y_end);


#endif

